Add a color picker interface
authorMatthias Clasen <mclasen@redhat.com>
Thu, 26 Jul 2018 22:45:49 +0000 (18:45 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 27 Jul 2018 18:23:19 +0000 (14:23 -0400)
This will be used in the color chooser, in subsequent commits.

gtk/gtkcolorpicker.c [new file with mode: 0644]
gtk/gtkcolorpickerprivate.h [new file with mode: 0644]
gtk/meson.build

diff --git a/gtk/gtkcolorpicker.c b/gtk/gtkcolorpicker.c
new file mode 100644 (file)
index 0000000..230761e
--- /dev/null
@@ -0,0 +1,53 @@
+/* GTK - The GIMP Toolkit
+ * Copyright (C) 2018, Red Hat, Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+
+#include "gtkcolorpickerprivate.h"
+#include <gio/gio.h>
+
+
+G_DEFINE_INTERFACE_WITH_CODE (GtkColorPicker, gtk_color_picker, G_TYPE_OBJECT,
+                              g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_INITABLE);)
+
+static void
+gtk_color_picker_default_init (GtkColorPickerInterface *iface)
+{
+}
+
+void
+gtk_color_picker_pick (GtkColorPicker      *picker,
+                       GAsyncReadyCallback  callback,
+                       gpointer             user_data)
+{
+  GTK_COLOR_PICKER_GET_INTERFACE (picker)->pick (picker, callback, user_data);
+}
+
+GdkRGBA *
+gtk_color_picker_pick_finish (GtkColorPicker  *picker,
+                              GAsyncResult    *res,
+                              GError         **error)
+{
+  return GTK_COLOR_PICKER_GET_INTERFACE (picker)->pick_finish (picker, res, error);
+}
+
+GtkColorPicker *
+gtk_color_picker_new (void)
+{
+  return NULL;
+}
+
diff --git a/gtk/gtkcolorpickerprivate.h b/gtk/gtkcolorpickerprivate.h
new file mode 100644 (file)
index 0000000..305d868
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * GTK - The GIMP Toolkit
+ * Copyright (C) 2018 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This Library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This Library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __GTK_COLOR_PICKER_H__
+#define __GTK_COLOR_PICKER_H__
+
+
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#error "Only <gtk/gtk.h> can be included directly."
+#endif
+
+#include <gtk/gtkwindow.h>
+
+G_BEGIN_DECLS
+
+
+#define GTK_TYPE_COLOR_PICKER             (gtk_color_picker_get_type ())
+#define GTK_COLOR_PICKER(o)               (G_TYPE_CHECK_INSTANCE_CAST ((o), GTK_TYPE_COLOR_PICKER, GtkColorPicker))
+#define GTK_IS_COLOR_PICKER(o)            (G_TYPE_CHECK_INSTANCE_TYPE ((o), GTK_TYPE_COLOR_PICKER))
+#define GTK_COLOR_PICKER_GET_INTERFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), GTK_TYPE_COLOR_PICKER, GtkColorPickerInterface))
+
+
+typedef struct _GtkColorPicker            GtkColorPicker;
+typedef struct _GtkColorPickerInterface   GtkColorPickerInterface;
+
+struct _GtkColorPickerInterface {
+  GTypeInterface g_iface;
+
+  void (* pick)             (GtkColorPicker      *picker,
+                             GAsyncReadyCallback  callback,
+                             gpointer             user_data);
+
+  GdkRGBA * (* pick_finish) (GtkColorPicker      *picker,
+                             GAsyncResult        *res,
+                             GError             **error);
+};
+
+GDK_AVAILABLE_IN_ALL
+GType            gtk_color_picker_get_type    (void) G_GNUC_CONST;
+GDK_AVAILABLE_IN_ALL
+GtkColorPicker * gtk_color_picker_new         (void);
+GDK_AVAILABLE_IN_ALL
+void             gtk_color_picker_pick        (GtkColorPicker       *picker,
+                                               GAsyncReadyCallback   callback,
+                                               gpointer              user_data);
+GDK_AVAILABLE_IN_ALL
+GdkRGBA *        gtk_color_picker_pick_finish (GtkColorPicker       *picker,
+                                               GAsyncResult         *res,
+                                               GError              **error);
+
+G_END_DECLS
+
+#endif  /* __GTK_COLOR_PICKER_H__ */
index aea3b8e9b15af0eac8ead1a2babfc2e9f6c971e6..76c30ed83482ff41a41c151ea2d6e89bee542c13 100644 (file)
@@ -30,6 +30,7 @@ gtk_private_sources = files([
   'gtkcellareaboxcontext.c',
   'gtkcoloreditor.c',
   'gtkcolorplane.c',
+  'gtkcolorpicker.c',
   'gtkcolorscale.c',
   'gtkcolorswatch.c',
   'gtkcssanimatedstyle.c',